class Animal {
    readonly name: string
    constructor(name) {
        this.name = name;
    }
    run() {
        return `${this.name} is running`
    }
}

const shake = new Animal('lily')
console.log(shake.run())


class Dog extends Animal {
    bark() {
        return `${this.name} is barking`
    }
}

const xiaoBao = new Dog('xiaoBao')
console.log(xiaoBao.run())
console.log(xiaoBao.bark())


class Cat extends Animal {
    static categories = ['ma'];
    constructor(name) {
        super(name);
        console.log(this.name)
    }
    run() {
        return `Meow, `+ super.run()
    }
}
const mao = new Cat('mao')
console.log(mao.run())
console.log(Cat.categories)
